GB_MBUS RTU Slave_P2.smartlib是从站库
GB_MBUS RTU Master_P2.smartlib是主站库

MBUS_INT

在第一个循环周期内初始化Modbus从站协议

Mode:         模式选择，启动/停止MODBUS，1=启动；0=停止
Address:     从站地址，MODBUS从站地址，取值1~247
Baud:         波特率，可选1200，2400，4800，9600，19200，38400，57600，115200 
Parity:         奇偶校验，0=无校验；1=奇校验；2=偶校验 
Delay:         延时，附加字符间延时，缺省值为0 
MaxIQ:       最大I/Q位，参与通信的最大I/O点数，S7-200 SMART的I/O映像区为256/256，缺省值为256
MaxAI:       最大AI字数，参与通信的最大AI通道数，取值范围 0-56。值为0时将禁止读取模拟量输入。
MaxHold:   最大保持寄存器区，参与通信的V存储区字（VW） 
HoldStart:   保持寄存器区起始地址，以&VBx指定（间接寻址方式） 

Done:        初始化完成标志，成功初始化后置1 
Error:         初始化错误代码

MBUS_SLAVE
在每个循环周期内执行Modbus 从站协议

Done:   MODBUS执行，通信中时置1，无 MODBUS 通信活动时为 0
Error:    错误代码：0=无错误 




GB_MBUS RTU Master_P2.  主站

MBUS_CTRL_P2
初始化Modbus 主站通信,

EN          使能：必须保证每一扫描周期都被使能（使用SM0.0)

Mode      模式：常为1，使能 Modbus 协议功能；为0 时恢复为系统 PPI 协议

Baud       波特率：设为9600，要与从站波特率对应

Parity       校验：校验方式选择 0＝无校验 


Timeout    超时：主站等待从站响应的时间，以毫秒为单位，典型的设置值为1000毫秒（1秒），
                            允许设置的范围为 1－32767。
                注意： 这个值必须设置足够大以保证从站有时间响应。

Done      完成位：初始化完成，此位会自动置1。可以用该位启动 MBUS_MSG 读写操作

Error       初始化错误代码（只有在 Done 位为1时有效）：0＝ 无错误
                                                                                                               1＝ 校验选择非法
                                                                                                               2＝ 波特率选择非法
                                                                                                               3 =   超时无效
                                                                                                               4＝ 模式选择非法
                                                                                                               9 = 端口号无效
                                                                                                              10 = 信号板端口1 缺失或未组态

MBUS_MSG_P2
读取从站保持寄存器的数据

EN             使能：同一时刻只能有一个读写功能（即 MBUS_MSG）使能
                  注意：建议每一个读写功能（即 MBUS_MSG）都用上一个 MBUS_MSG 指令的 Done 完成位来激
                              活，以保证所有读写指令循环进行（见程序）。 

First           读写请求位：每一个新的读写请求必须使用脉冲触发 

Slave         从站地址：可选择的范围 1－247

RW           读写操作：0＝读， 1＝写
                 注意：1. 开关量输出和保持寄存器支持读和写功能
                             2. 开关量输入和模拟量输入只支持读功能

Addr          读写从站的数据地址：选择读写的数据类型 00001至0xxxx－开关量输出
                                                                                              10001至1xxxx－开关量输入
                                                                                              30001至3xxxx－模拟量输入
                                                                                              40001至4xxxx－保持寄存器

Count       通讯的数据个数（位或字的个数）
                 注意： Modbus主站可读/写的最大数据量为120个字（是指每一个 MBUS_MSG 指令）

DataPtr     数据指针：1. 如果是读指令，读回的数据放到这个数据区中
                                  2. 如果是写指令，要写出的数据放到这个数据区中

Done        读写功能完成位

Error         错误代码 只有在 Done 位为1时，错误代码才有效
错误代码： 0＝无错误
                     1＝响应校验错误
                     2＝未用
                     3＝接收超时（从站无响应）
                     4＝请求参数错误（slave address,Modbus address,count,RW）
                     5＝Modbus/自由口未使能 
                     6＝Modbus正在忙于其它请求
                     7＝响应错误（响应不是请求的操作）
                     8＝响应CRC校验和错误
                    11 = 端口号无效
                    12 = 信号板端口 1 缺失或未组态     

                 101＝ 从站不支持请求的功能
                 102＝ 从站不支持数据地址
                 103＝ 从站不支持此种数据类型
                 104＝ 从站设备故障
                 105＝ 从站接受了信息，但是响应被延迟
                 106＝ 从站忙，拒绝了该信息
                 107＝ 从站拒绝了信息
                 108＝ 从站存储器奇偶错误



常见的错误及其错误代码：

1. 如果多个 MBUS_MSG 指令同时使能会造成6号错误

2. 从站 delay 参数设的时间过长会造成3号错误

3. 从站掉电或不运行，网络故障都会造成3号错误